package com.study.bootstudy.listener;

import cn.hutool.core.collection.CollectionUtil;
import org.springframework.util.CollectionUtils;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;

/**
 * @Author RenPu
 * @Date 2023/9/22 12:29
 * @Version 1.0
 * @Description:
 **/
public class Test {

//    public static void main(String[] args) {
//
//        ArrayList<Object> objects1 = new ArrayList<>();
//        objects1.add("111");
//        objects1.add("222");
//        objects1.add("333");
//        objects1.add("222");
//        Set<Object> objects = new HashSet<>(objects1);
//        int setsize=objects.size();
//        BigDecimal setLnt = new BigDecimal(objects.size() + "");
//
//        BigDecimal actualFreightBD = new BigDecimal("10");
//        BigDecimal decimal = actualFreightBD.remainder(setLnt);
//
//
//        if(decimal.compareTo(BigDecimal.ZERO)==0){
//            System.out.println(actualFreightBD.divide(setLnt, BigDecimal.ROUND_DOWN));
//        }else {
//
//
//    }
//
//    }



//public Set<Object> getZZ(BigDecimal actualFreightBD,BigDecimal setLnt){
//
//    BigDecimal quotient = actualFreightBD.divide(setLnt, 2, BigDecimal.ROUND_DOWN); // 使用ROUND_DOWN进行向下取整
//    Random random = new Random();
//    BigDecimal sum = quotient;
//    int randomInt = random.nextInt(2);
//    if (randomInt == 0) {
//        sum = sum.add(decimal);
//    } else {
//        sum = sum.add(quotient);
//    }
//    Set<BigDecimal> resultSet = new HashSet<>();
//
//    return resultSet;
//}


    public static void main(String[] args) {
//        BigDecimal dividend = new BigDecimal("10.5");
//        BigDecimal divisor = new BigDecimal("6");
//        List<BigDecimal> divisorlist = divideAndGetCeilings(dividend, divisor,6);
//        System.out.println("集合内容为：：：：："+divisorlist);
//仓库
        List<Object> list = new ArrayList<>();
        int ckNum = 3;
        System.out.println("仓库数量：" + ckNum);
        //实付金额
        BigDecimal money = new BigDecimal(10);
        System.out.println("实付金额：" + money);
        //向上取整的平均金额
        BigDecimal per = money.divide(BigDecimal.valueOf(ckNum), 0, RoundingMode.UP);
        System.out.println("向上取整的平均金额：" + per);
        //取整后多余的金额
        BigDecimal diff = per.multiply(BigDecimal.valueOf(ckNum)).subtract(money);
        System.out.println("取整后多余的总金额：" + diff);
        System.out.println("向上取整说明每个仓库最多加1, 需要减少1金额的仓库数：" + diff);
        for (int i = 1; i <= ckNum; i++) {
            if (i <= ckNum - diff.intValue()) {
                System.out.printf("仓库%s支付金额：%s%n", i, per);
                list.add(per);
            } else {
                System.out.printf("仓库%s支付金额：%s%n", i, per.intValue() - 1);
                list.add(per.intValue() - 1);
            }
        }
        // 打乱集合中元素的顺序
        Collections.shuffle(list);

        System.out.println(list+"===============数据集合打印===================");
    }



    }



//    private static List<BigDecimal> divideAndGetCeilings(BigDecimal dividend, BigDecimal divisor,int lent) {
//        List<BigDecimal> ceilings = new ArrayList<>();
//        for (int i = 0; i <= lent-1; i++) {
//            BigDecimal ceiling = dividend.divide(divisor, i, RoundingMode.CEILING);
//            BigDecimal scale = ceiling.setScale(0, RoundingMode.DOWN);
//            ceilings.add(scale);
//        }
//        Collections.shuffle(new ArrayList<>(ceilings));
//
//        return ceilings;
//    }


